Skip to content

Commit a5129a4

Browse files
committed
handle the reviewer and readied_for_localization_by fields
1 parent 790a14b commit a5129a4

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

kitsune/wiki/handlers.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ def on_user_deletion(self, user: User) -> None:
3030

3131
sumo_bot = Profile.get_sumo_bot()
3232
Revision.objects.filter(creator=user).update(creator=sumo_bot)
33+
Revision.objects.filter(reviewer=user).update(reviewer=sumo_bot)
34+
Revision.objects.filter(readied_for_localization_by=user).update(
35+
readied_for_localization_by=sumo_bot
36+
)
3337
# Anonymize any revision votes.
3438
HelpfulVote.objects.filter(creator=user).update(
3539
creator=None, anonymous_id=AnonymousIdentity().anonymous_id

kitsune/wiki/tests/test_handlers.py

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@
55
from kitsune.users.tests import GroupFactory, UserFactory
66
from kitsune.wiki.handlers import DocumentListener
77
from kitsune.wiki.models import Document, Revision
8-
from kitsune.wiki.tests import DocumentFactory, HelpfulVoteFactory, RevisionFactory
8+
from kitsune.wiki.tests import (
9+
ApprovedRevisionFactory,
10+
DocumentFactory,
11+
HelpfulVoteFactory,
12+
RevisionFactory,
13+
)
914

1015

1116
class TestDocumentListener(TestCase):
@@ -124,3 +129,41 @@ def test_non_approved_revision_handling(self):
124129
self.assertEqual(
125130
doc_to_reassign.current_revision.creator.username, settings.SUMO_BOT_USERNAME
126131
)
132+
133+
def test_revision_reviewer_replacement(self):
134+
"""
135+
Test handling of a revision's "reviewer" and "readied_for_localization_by" fields
136+
when the user they reference is deleted.
137+
"""
138+
reviewer = UserFactory()
139+
contributor = UserFactory()
140+
rev1 = ApprovedRevisionFactory(
141+
creator=contributor,
142+
reviewer=reviewer,
143+
readied_for_localization_by=reviewer,
144+
)
145+
rev2 = ApprovedRevisionFactory(
146+
creator=self.user,
147+
reviewer=reviewer,
148+
readied_for_localization_by=reviewer,
149+
)
150+
rev3 = ApprovedRevisionFactory(
151+
creator=contributor,
152+
reviewer=self.user,
153+
readied_for_localization_by=self.user,
154+
)
155+
156+
self.listener.on_user_deletion(self.user)
157+
158+
for rev in (rev1, rev2, rev3):
159+
rev.refresh_from_db()
160+
161+
self.assertEqual(rev1.creator.username, contributor.username)
162+
self.assertEqual(rev1.reviewer.username, reviewer.username)
163+
self.assertEqual(rev1.readied_for_localization_by.username, reviewer.username)
164+
self.assertEqual(rev2.creator.username, settings.SUMO_BOT_USERNAME)
165+
self.assertEqual(rev2.reviewer.username, reviewer.username)
166+
self.assertEqual(rev2.readied_for_localization_by.username, reviewer.username)
167+
self.assertEqual(rev3.creator.username, contributor.username)
168+
self.assertEqual(rev3.reviewer.username, settings.SUMO_BOT_USERNAME)
169+
self.assertEqual(rev3.readied_for_localization_by.username, settings.SUMO_BOT_USERNAME)

0 commit comments

Comments
 (0)